Servo motors, including generally motors whose torque, position, or velocity may be controlled in response to a feedback signal, are used widely in industrial processes where control of these quantities is critical.
In application, the servo motor is typically associated with a sensor for providing a feedback signal for the controlled quantity. For example, for the control of either position or velocity, the sensor may be a position sensor sensing angular position of the motor. Two common position sensors are resolvers, providing phased sinusoidal outputs depending on the angle of the resolvers' input shaft, and rotary encoders, providing either a digital word indicating absolute angular position or a series of pulses indicating incremental motion and direction.
The servo motor is typically associated with a motor amplifier which provides power for driving the motor. For a DC servo motor, the servo amplifier is a high powered DC amplifier. More complex motor amplifiers are used for driving brushless AC motors where commutation of the current flow in the windings is required. Amplifiers which provide commutation also typically require a position feedback signal from the position sensor.
While some motor amplifiers may be programmed to provide rudimentary, higher-level control of the motor, such as setting limits of output speed, velocity or torque, ordinarily, more complex control of motor motion is done by a motion controller.
A motion controller incorporates specialized circuitry dedicated to real-time motion control in response to signals received from the position sensor. For example, the motion controller may implement the well known proportional/integral/derivative (PID) type control loop. The motion controller typically includes a general purpose computer which may be programmed to provide a series of useful control functions. For example, the velocity profile of the motor's motion between two positions may be controlled. Profiles for such motion may be selected in the program to be a trapezoid, where the velocity ramps linearly up or down at the beginning or end of the motion, or an "S curve" or "parabola", in which the straight ramps of the trapezoid are replaced by curved shapes having constrained higher derivatives.
Motion control functions having general use in multiple applications may be incorporated as instructions into a higher level "motion control" language. The operator programs the motion control computer using these instructions and standard computer instructions like branching instructions and loop instructions.
The instructions for programming the motion controller may be entered via a programming terminal attached to the motion controller. Typically, these instructions are in the form of human readable alphanumeric mnemonics which are received by the motion controller and stored in internal memory. For example, the characters "M100" might be used to instruct the motion controller that the motor should be moved by 100 units.
Typically, during real-time control of the motor, an interpreter program within the motion controller converts each alphanumeric mnemonic of the program into machine instructions, one at a time as the instructions are needed. The machine instructions may be directly executed by the general purpose computer of the motion controller to produce the necessary output signals needed to drive the motor amplifier.
It is known to display on a computer screen, a schematized picture of the controlled process, such as a conveyor line, indicating its physical operation as it is controlled. Such a picture displays the outputs and inputs to the motion controller, as they affect the controlled process, and may indirectly permit the monitoring of the operation of the controller as manifest in interactions between the motion controller and the controlled process. Such pictures of the process being controlled will be termed data-flow representations because they primarily indicate the data-flow between the inputs and outputs of the control process.
Such data-flow representations may assist the human programmer in verifying the operation of the control program being executed by the motion controller. Nevertheless, the use of such data-flow representations in troubleshooting or "debugging" the control program is limited by the fact that the important internal operation of the control program is not shown and may not be apparent from the outputs to or inputs from the controlled process. This shortcoming is most acute when outputs to the controlled process are complex logical combinations of inputs, output and internal states of the controlling program--as is often the case.